#pragma once

#include "Level.h"

/**
 * PseudoClassicLevel is a simplistic modification of the classic rogue level layout.
 * The base of the algorithm is governed by random rooms connected by hallways; however,
 * in this case, there is no error checking to ensure that hallways do not cut through
 * other rooms on the way to their destination. This doesn't produce "classic" results,
 * but it does produce good, randomized results.
 */
class PseudoClassicLevel : public Level {
protected:
	/** Random layout generation algorithm */
	void generateLayout();
public:
	/**
	 * Constructor if this Level is the first Level in a Dungeon
	 *
	 * @param cols Number of columns
	 * @param rows Number of rows
	 * @param levelNum Position in the list of Dungeon levels
	 * @param dlevel Danger level
	 * @param dungeon The Dungeon this level is contained in
	 */
	PseudoClassicLevel(int cols, int rows, int levelNum, int dlevel, Dungeon* dungeon);

	/**
	 * Constructor if this Level is not the first level in a Dungeon
	 *
	 * @param cols Number of columns
	 * @param rows Number of rows
	 * @param level The Level above this one
	 */
	PseudoClassicLevel(int cols, int rows, Level* level);
	/** Destructor */
	~PseudoClassicLevel();
};

